Many software applications need access to more information (whether program code or data) than can be stored in physical memory of the computing platform on which the applications run, especially when the operating system allows multiple processes/applications to run concurrently (e.g., a multitasking computing system). One solution to the problem of the maximum size of the physical memory being less than that needed for all concurrently running programs is for an application to keep some of its information in secondary storage, for example, on disk storage, and move the information back and forth to physical memory as needed. Virtual memory is one technique for providing such a solution.
Virtual memory, also referred to as virtual memory addressing, is a memory management technique used by computer operating systems so that non-contiguous memory is presented to a software application (a “process”) as contiguous memory. The contiguous memory is referred to as the virtual address space for the process. Virtual memory addressing is commonly used in paged memory systems, and often combined with memory swapping, where memory pages stored in primary storage are written to secondary storage, thus freeing faster primary storage for other processes to use.
Virtual memory allows software to run in a virtual address space, or simply, address space, whose size and addressing methods may be independent of the computing platform's physical memory. A computer's hardware and operating system map virtual memory to physical memory and detect when an address is needed that does not currently relate to main memory so that data can be swapped in. Virtual memory makes it appear to software running on a computer as if the computer has a much larger main memory than it actually does and to lay out the address space as needed by the software.
Virtual memory provides the ability to simulate a main memory of any size, limited by the size of the addresses being used by the operating system and computing platform. On 32-bit address based computers, the total size of virtual memory is 232, or approximately 4 Gigabytes, while 64 bit systems and operating systems use 64 or 48 bit addresses and can accommodate much more virtual memory. However, parts of the virtual address space are reserved so that, on most operating systems, the available address space for a process (i.e., a running software application) is limited to approximately 2 gigabytes. For larger applications, such as R/3, available from SAP AG, the assignee of this invention, running on 32-bit systems, this memory size becomes a crucial bottleneck.